package com.turing.post.log.util;

import java.rmi.RemoteException;
import java.util.logging.Handler;
import java.util.logging.Logger;

import weblogic.logging.LoggingHelper;

public class PCPSLogRegister {
	// 设置weblogic 日志的过滤器
	private void setFilter(Logger serverlogger) {
		Handler[] handlerArray = serverlogger.getHandlers();
		for (int i = 0; i < handlerArray.length; i++) {
			Handler h = handlerArray[i];
			// 针对不同的处理器，设置不同的消息级别和过滤器
			if (!(h instanceof PCPSLogHandler))
				h.setFilter(new WLSFilter());
		}
	}

	public void registeLogger() throws RemoteException {
		// 通过LoggingHelper类的静态方法getServerLogger获得服务器端的Logger对象
		Logger logger = LoggingHelper.getServerLogger();
		Handler h = null;
		try {
			setFilter(logger);
			// 实例化自己的日志处理器
			h = new PCPSLogHandler();
			// 将自己的日志处理器注册给服务器端的Logger对象
			// 这样当服务器的Logger对象里面被写入日志信息时，自己的处理内可以得到通知
			logger.addHandler(h);
		} catch (Exception nmex) {
			System.err.println("Error adding PCPSLogHandler to logger "
					+ nmex.getMessage());
			logger.removeHandler(h);
		}
	}

	public static void main(String s[]) {
		try {
			new PCPSLogRegister().registeLogger();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}